<?php
/**
 * 当前项目的控制器抽象类
 * @author  ZhouHaoHua <53027327@qq.com>
 * @package
 */
class Abstract_Action extends \core\models\Abstract_Action {
    /**
     * 是否ajax提交
     * @var bool
     */
    public $ajax;
    /**
     * 网页头部的模板文件名
     * @var string
     */
    public $tplTop = 'top.tpl.php';
    /**
     * 网页中部模板文件名
     * @var string
     */
    public $tplContent = '';
    /**
     * 网页底部的模板文件名
     * @var string
     */
    public $tplBottom = 'bottom.tpl.php';
    /**
     * 网页meta元素Description
     * @var string
     */
    public $metaDescription = '';
    /**
     * 网页meta元素Keywords
     * @var string
     */
    public $metaKeywords = '';
    /**
     * 网页Title的内容
     * @var string
     */
    public $metaTitle = '';
    /**
     * 网页编码
     * @var string
     */
    public $metaCharset = 'utf-8';
    /**
     * 数据编码
     * @var string
     */
    public $dataCharset = 'utf-8';
    /**
     * 是否使用session，默认设置为false，此项若要打开可以到具体的控制器中在【类初始化的时候】设置比较节约服务器响应时间。如在注册、登录购买过程等设置为true！
     * @var bool
     */
    public $sessionUse = false;
    /**
     * 是否生成html静态页
     * @var bool
     */
    public $htmlCache = false;
    /**
     * 网站消息提示类
     * @var core\models\MessageStack
     */
    public $messageStack;
    public function __construct() {
        parent::__construct();
        //判断是否是ajax提交
        if(!empty($_REQUEST['ajax']) || Z::Network()->isAjax() === true){
            $this->ajax = true;
        }
    }

    /**
     * 当遇到不存在的方法的处理方式
     * @param string $name      方法名称
     * @param array  $arguments 参数列表
     * @throws \core\models\Exception404
     */
    public function __call($name, $arguments) {
        $txt = "No existing method: '$name' arguments:" . implode(', ', $arguments) . "\n";
        throw new \core\models\Exception404($txt);
    }
}